<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>箭头函数</title>
</head>
<body>
<script>
  //ES6 允许使用【箭头】=> 定义函数
  //声明一个函数
  // let fn2 = function (){
  //
  // }

  let fn = (a,b) => {
    return a + b;
  }

  //调用函数
  let result = fn(1,2);
  console.log(result);

  //箭头函数的特点
  //1.this是静态的，始终指向函数声明时所在的作用域下的this的值
  function getName(){
    console.log(this.name);
  }
  let getName2 = () => {
    console.log(this.name);
  }

  //设置windows对象的属性
  window.name = "mask";
  const school = {
    name: "atguigu"
  }

  //直接调用
  // getName();
  // getName2();

  //call 方法调用
  getName.call(school);
  getName2.call(school);

  //2.不能作为构造实例对象
  // let Person = (name,age) => {
  //   this.name = name;
  //   this.age = age;
  // }
  // let me = new Person('xiao',20);
  // console.log(me);

  //3.不能使用arguments变量
  // let fn2 = () => {
  //   console.log(arguments);
  // }
  // fn2(1,2,3);

  //4.箭头函数的简写
  //省略小括号 当行参有且仅有一个时
  let add = n => {
    return n + n;
  }
  console.log(add(9));

  //省略花括号 当代码体只有一条语句时,此时return必须省略
  //而且语句的执行结果即就是函数的返回值
  let pow = n => n * n;

  console.log(pow(10));
</script>
</body>
</html>